package com.ziDingYiValidator2;

import com.ziDingYiValidator.CheckTel;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 在validate中自定义校验注解必须实现ConstraintValidator接口
 * 他有两个泛型：第一个泛型CheckCase：是你的注解
 *               第二个String是接收参数的类型，是根据参数类型来的
 */
public class CheckCaseValidate  implements ConstraintValidator<CheckCase,String> {

    private CaseMode caseMode;
    /**
     * 初始化需要完成的事情
     * initialize方法中可以获取到自定义注解中的属性
     */
    @Override
    public void initialize(CheckCase constraintAnnotation) {
         caseMode = constraintAnnotation.value();
    }

    /**
     * 处理校验的方法
     * value：代表入参的值
     * return true：表示校验失败
     * return false：表示校验成功
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        System.out.println("入参值："+value);
        System.out.println("枚举："+caseMode);
        if (value==null){
            //若为空则就不走格式校验，这样就只返回一个校验信息了
            return false;
        }
        if (caseMode==CaseMode.UPPER){
            return value.equals(value.toUpperCase());
        }
        return false;
    }
}
